﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using HomeCare.View;
using System.Data;

namespace HomeCare.Model
{
    class AcessosDados
    {
        Conexao con = new Conexao();
        
        public DataSet VerificaAcesso(Pessoa pessoa, Tela tela)
        {
            SqlConnection sql = con.Conectar();
            sql.Open();
            string query = String.Empty;
            query += "select * ";
            query += "from Pessoas ";
            query += "inner join Pessoas_has_Perfis on Pessoas.ID = Pessoas_has_Perfis.Pessoas_ID ";
            query += "inner join Perfis on Perfis.ID = Pessoas_has_Perfis.Perfis_ID ";
            query += "inner join Acessos on Acessos.Perfis_ID = Perfis.ID ";
            query += "inner join Telas on Telas.ID = Acessos.Telas_ID ";
            query += " where (1=1) ";
            query += String.IsNullOrEmpty(pessoa.id.ToString())? String.Empty : (String.Format(" and Pessoas.ID = '{0}' ", pessoa.id));
            query += String.IsNullOrEmpty(tela.id.ToString()) ? String.Empty : (String.Format(" and Telas.ID = '{0}' ", tela.id));
            try
            {
                SqlDataAdapter dataAdapter = new SqlDataAdapter(query, sql);
                DataSet dataSet = new DataSet();
                dataAdapter.Fill(dataSet);
                sql.Close();
                return dataSet;
            }
            catch (Exception ex)
            {
                sql.Close();
                throw new Exception("Erro ao consultar Acesso.");
                //MessageBox.Show(ex.Message);

            }

        }

        public DataSet ListaAcesso(Perfil perfil)
        {
            SqlConnection sql = con.Conectar();
            sql.Open();
            string query = String.Empty;
            query += "select Descricao, ";
            query += String.Format("isnull((select Inclusao from Acessos where Acessos.Perfis_ID = {0}  and Acessos.Telas_ID=T.ID),'N') as Inclusao, ",perfil.id);
            query += String.Format("isnull((select Alteracao from Acessos where Acessos.Perfis_ID = {0}  and Acessos.Telas_ID=T.ID),'N') as Alteracao, ",perfil.id);
            query += String.Format("isnull((select Exclusao from Acessos where Acessos.Perfis_ID = {0}  and Acessos.Telas_ID=T.ID),'N') as Exclusao, ",perfil.id);
            query += String.Format("isnull((select Consulta from Acessos where Acessos.Perfis_ID = {0}  and Acessos.Telas_ID=T.ID),'N') as Consulta ",perfil.id);
            query += "from Telas T ";
            
            try
            {
                SqlDataAdapter dataAdapter = new SqlDataAdapter(query, sql);
                DataSet dataSet = new DataSet();
                dataAdapter.Fill(dataSet);
                sql.Close();
                return dataSet;
            }
            catch (Exception ex)
            {
                sql.Close();
                throw new Exception("Erro ao consultar Acesso.");
                //MessageBox.Show(ex.Message);

            }

        }


    }
}
